const app = getApp();

Page({
  data: {
    imgUrl: '',
    user: {
      username: '',
      email: '',
      phone: '',
      realName: '',
      studentId: '',
      major: '',
      address: '',
      contactInfo: '',
      avatar:''
    },
  },

  onLoad() {
    this.setData({
      imgUrl: app.imgUrl
    })
    this.getUserInfo();
    wx.stopPullDownRefresh()
  },
  uploadAvatar() {
    wx.chooseImage({
      count: 1,
      sourceType: ['album', 'camera'],
      success: res => {
        const imageUrl = res.tempFilePaths[0];
        
        // 上传到服务器
        wx.uploadFile({
          url: `${app.apiUrl}/common/upload`, // 替换为你的上传接口地址
          filePath: imageUrl,
          name: 'file', // 这里的 name 要与后端 MultipartFile 参数名一致
          success: uploadRes => {
              console.log(uploadRes)
              const data = JSON.parse(uploadRes.data);
              console.log(data)
              this.setData({
                'user.avatar': data // 假设后端返回的图片地址在 fileName 字段
              });
              wx.showToast({ title: '上传成功', icon: 'success' });
              // console.log(this.data.book.imageUrl)
          },
          fail: () => {
            wx.showToast({ title: '上传失败', icon: 'error' });
          }
        });
      }
    });
  },

  // 获取用户信息
  getUserInfo() {
    const token = wx.getStorageSync('token');
    wx.request({
      url: `${app.apiUrl}/users`,
      method: 'GET',
      header: { token },
      success: res => {
        if (res.data.code === 1) {
          this.setData({ user: res.data.data });
        } else {
          wx.showToast({ title: res.data.msg || '获取信息失败', icon: 'error' });
        }
      },
      fail: () => {
        wx.showToast({ title: '网络错误，请稍后重试', icon: 'error' });
      }
    });
  },
  onPullDownRefresh(){
    this.onLoad()
},
  // 更新用户输入
  handleInputChange(e) {
    console.log('Change event detail:', e.detail); // 打印完整的 e.detail
    const field = e.currentTarget.dataset.field; // 获取字段名称
    const value = e.detail; // 获取输入的值
  
    console.log('Field:', field); // 打印字段名称
    console.log('Value:', value); // 打印输入值
  
    this.setData({
      [`user.${field}`]: value // 更新对应字段
    });
  
    console.log('Updated user:', this.data.user); // 打印更新后的用户信息
  },
  logoutUser() {
    const token = wx.getStorageSync('token');
  
    wx.showModal({
      title: '确认注销',
      content: '您确定要注销该用户吗？',
      success: (res) => {
        if (res.confirm) {
          wx.request({
            url: `${app.apiUrl}/users`,
            method: 'DELETE',
            header: { token },
            success: (res) => {
              if (res.data.code === 1) {
                wx.showToast({ title: '注销成功', icon: 'success' });
                // 注销成功后，清除本地存储的用户信息和token
                wx.removeStorageSync('token');
                wx.removeStorageSync('user'); // 如果有存储用户信息
                // 跳转到登录页面或首页
                wx.redirectTo({ url: '/pages/user/login/login' }); // 根据你的页面结构调整
              } else {
                wx.showToast({ title: res.data.msg || '注销失败', icon: 'error' });
              }
            },
            fail: () => {
              wx.showToast({ title: '网络错误，请稍后重试', icon: 'error' });
            }
          });
        }
      }
    });
  },

  // 更新用户信息
  updateUserInfo() {
    const token = wx.getStorageSync('token');
    const { user } = this.data;

    // 过滤出非空字段，避免传递不必要的数据
    const filteredUserData = Object.fromEntries(
      Object.entries(user).filter(([_, value]) => value !== null && value !== undefined && value !== '')
    );

    if (Object.keys(filteredUserData).length === 0) {
      wx.showToast({ title: '没有修改任何信息', icon: 'none' });
      return; // 如果没有修改则返回
    }

    wx.request({
      url: `${app.apiUrl}/users/update`,
      method: 'PUT',
      header: {
        'Content-Type': 'application/json',
        token: token,
      },
      data: filteredUserData,
      success: res => {
        if (res.data.code === 1) {
          wx.showToast({ title: '更新成功', icon: 'success' });
          wx.navigateBack();
        } else {
          wx.showToast({ title: res.data.msg || '更新失败', icon: 'error' });
        }
      },
      fail: () => {
        wx.showToast({ title: '网络错误，请稍后重试', icon: 'error' });
      }
    });
  }
});
